meson: check for xinerama
authorTim-Philipp Müller <tim@centricular.com>
Fri, 24 Mar 2017 11:34:49 +0000 (11:34 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 3 May 2017 14:10:56 +0000 (15:10 +0100)
gdk/x11/meson.build
meson.build
meson_options.txt

index 298c5929e26a35312b42c368365d42aa4923a198..82e75d5f3d8dff0a3ba712615d1224eb9aaac77f 100644 (file)
@@ -64,6 +64,7 @@ gdk_x11_deps = [
   xfixes_dep,
   xcomposite_dep,
   xrandr_dep,
+  xinerama_dep,
 ]
 
 libgdk_x11 = static_library('libgdk-x11',
index 96d1fdf4841cbc843b9e7ca26d17414b2821212f..5158c8b1cc9c906141c0345339bc4cd8521df704 100644 (file)
@@ -122,8 +122,6 @@ endforeach
 # Maths functions might be implemented in libm
 libm = cc.find_library('m', required : false)
 
-# FIXME: HAVE_XFREE_XINERAMA
-
 check_functions = [
   'dcgettext',
   'getpagesize',
@@ -231,8 +229,6 @@ if x11_enabled
   fontconfig_dep = dependency('fontconfig')
   atkbridge_dep  = dependency('atk-bridge-2.0', version: atk_req)
 
-  # FIXME: check for xinerama + add to x11_pkgs
-
   x11_pkgs = ['fontconfig', 'x11', 'xext', 'xi', 'xrandr']
 
   if xcursor_dep.found()
@@ -281,6 +277,20 @@ if x11_enabled
     endif
   endif
 
+  enable_xinerama = get_option('enable-xinerama')
+  if enable_xinerama != 'no'
+    want_xinerama = enable_xinerama == 'yes'
+    xinerama_dep = dependency('xinerama', required : want_xinerama)
+    if xinerama_dep.found() and cc.has_header_symbol('X11/extensions/Xinerama.h', 'XineramaQueryExtension', dependencies : xinerama_dep)
+      cdata.set('HAVE_XFREE_XINERAMA', 1)
+      x11_pkgs += ['xinerama']
+    elif want_xinerama
+      error('No function XineramaQueryExtension in xinerama dependency which was explicitly requested.')
+    endif
+  else
+    xinerama_dep = []
+  endif
+
   cdata.set('HAVE_RANDR', xrandr_dep.found())
   cdata.set('HAVE_RANDR15', xrandr15_dep.found())
 endif
@@ -329,6 +339,8 @@ if enable_vulkan != 'no'
   if vulkan_lib.found() and cc.has_function('vkCreateInstance', dependencies : vulkan_lib) and cc.has_header('vulkan/vulkan.h')
     have_vulkan = true
     pc_gdk_extra_libs += ['-lvulkan']
+  elif enable_vulkan == 'yes'
+    error('Vulkan support not found, but was explicitly requested.')
   endif
 else
   message('Vulkan support explicitly disabled')
index 7ccabfd60284cfba1bbc0e8bb7de60ffd7756e0c..bf80420ceb3c6bce4a6a3c86b40f58195bd0c6d1 100644 (file)
@@ -18,3 +18,5 @@ option('enable-papi-print-backend', type: 'combo', choices : ['yes', 'no', 'auto
   description : 'Enable the papi print backend')
 option('enable-cloudprint-print-backend', type: 'combo', choices : ['yes', 'no', 'auto'], value : 'auto',
   description : 'Enable the cloudprint print backend')
+option('enable-xinerama', type: 'combo', choices : ['yes', 'no', 'auto'], value : 'auto',
+  description : 'Enable support for the Xinerama extension')